Profiling the execution of an application program in computer processing systems has shown that it may take a long time to execute certain segments of the program. These delays are often caused by long table walks or long cache misses. This is often the result of writing the application program in a high level language that can be easily ported to different platform configurations. Also, tuning the application program to run efficiently on a specific platform configuration is usually given lower priority than providing new functions in the application program. As a result, tuning an application program to run more efficiently on a specific platform configuration is performed for only a few applications.
There are several approaches that have been developed to optimize or tune object code to run more efficiently on a specific platform configuration. One approach is described in U.S. Pat. No. 5,452,457. Under this approach, compiler directives are inserted in the source code, the source code is compiled, and the resultant object code is performance tested and data is accumulated. Based on the accumulated data, the compiler directives are modified and the source code is recompiled. Another approach is to profile an application program to identify the critical blocks in the code, and to hand tune the code to minimize the effects of critical blocks such as long table walks or long cache misses. All of the known approaches to optimizing can require a significant amount of off-line operator interaction and analysis. Because of the complexity of the issues involved, application program optimization is not usually performed by the end user. Other patents relating to performance monitoring include U.S. Pat. Nos. 5,727,167 and 5,748,855.
Therefore, there is a need for an automated method of optimizing application programs on a specific platform configuration that minimizes the effects of long table walks and long cache misses. It is desirable that this optimization can be performed by the end user as the need arises.